/**
 * Desarrollado por: Judelvis Antonio Rivas Perdomo
 * Modificado por: Carlos Enrique Pena
 * Fecha Creacion: 29 de Marzo de 2012
 * Fecha Modificacion: 15 de Abril de 2012
 */

/**
 * Clase Grid
 *
 * TODO Componente Rejilla
 * Depende: TPaginador
 *
 * oEsq : Grid (Privado)
 * oTabla: Tabla (html)
 * oPag : Paginador (Div)
 * return TGrid
 */
TGrid = function(oEsq, div, strRuta, strImg, strTitulo, bExel) {
	this.Esq = oEsq; //oEsq; //Objeto Grid
	this.Div = div;// Div donde se escribe la tabla
	//this.Tabla = oTabla; // Tabla Html
	//this.Pag = oPag; //Paginador
	this.Titulo = strTitulo;
	this.exel = bExel;
	this.Enu = ''; //Elemento para enumerar Filas
	this.Ruta = strRuta; // ruta para guardar archivo 
	this.Img = strImg; //ruta para la carpeta imagenes
	this.p = null; //Objeto para el Paginador
	this.Tipo_Origen = '';
	this.GetName = null;

	this.SetName = function(Name){
		this.GetName = Name;
	}
	//En caso de enviar paginador por partes
	this.SetPaginador = function(Pag) {
		this.Pagainador = Pag;
	}
	this.GetPaginador = function() {
		alert(this.Pagainador);
	}
	//Definir Estilos
	this.Cargar = function() {

		return false;
	}
	//Origen de Datos
	this.Origen = function(oVal) {
		if(oVal == 'json'){
			this.Tipo_Origen = 'json';
			this.Generar_Json();
		}else{
			this.Tipo_Origen = 'mysql';
			this.Generar_Mysql();
		}
	}
	
	//Construye el Grid
	this.Generar_Json = function() {
		var oEsquema = this.Esq;
		//Del Grid
		var iFil = 0		
		var iCol = 0;
		var fecha_activa = "";
		//alert("UFF");
		$("#"+this.Div).html('');
		var div_principal = document.getElementById(this.Div);
		//div_principal.style.cssText = "WIDTH: 100%;height:80%;";
		
		var div_superior = document.createElement("div");
		div_superior.id = "div_superior" + this.GetName;
		div_principal.appendChild(div_superior);
		
		var div_medio = document.createElement("div");
		div_medio.id = "div_medio" + this.GetName;
		div_medio.style.cssText = "OVERFLOW: auto;height:80%;";
		div_principal.appendChild(div_medio);
		
		var div_inferior = document.createElement("div");
		div_inferior.id = "div_inferior" + this.GetName;
		div_principal.appendChild(div_inferior);
		
		var la_tabla = document.createElement("table");
		la_tabla.id = "tabla_tgrid" + this.GetName;
		la_tabla.className = "TGrid";
		
		la_tabla.style.width = "100%";
		div_medio.appendChild(la_tabla);
		
		var columnas_ocultas = new Array(); //ARREGLO PARA GUARDAR QUE COLUMNAS DE LA TABLA SE VAN A OCULTAR
		var arreglo_elementos = new Array(); //ARREGLO PARA GUARDAR QUE ELEMENTOS SE VAN A MOSTRAR EN EL CUERPO DE LA TABLA
		// De la Cabezera
		var numero_col = 0; //VARIABLE DE CONTROL PARA USAR LA FUNCIONES MUESTRA_FILTRO Y OCULTA_COLUMNA
		var cadena_tipo = ""; // Identificar el valor del Objeto para las Columnas
		var la_cabezera = la_tabla.createTHead();
		var la_fila_cab = la_cabezera.insertRow(0);
		var th_enumera = document.createElement('th');
		
		// Del Cuerpo
		var iFilas = 0;
		var cuerpo_tabla = document.createElement('tBody');
		var identificador = "";
		
		
		
		/******************INICA CABEZERA*****************/
		
		if(oEsquema.Enumerar != null) {
			la_tabla.style.emptyCells = "inherit";
			th_enumera.id = 'T_enumera' ;
			la_fila_cab.appendChild(th_enumera);
			var th_aux = document.createElement('th');
		}
		// Lectura de la Cabezera
		$.each(oEsquema.Cabezera, function(sId_Columnas, sArreglo) {
			var th = document.createElement('th');
			th.id = 'T' + sId_Columnas;
			th.style.cssText = sArreglo.atributos;
			la_fila_cab.appendChild(th);
			th.innerHTML = sArreglo.titulo;
			if(sArreglo.buscar != null) { //VERIFICA SI EN LA COLUMNA LLEVA FILTRO DE BUSQUEDA
				var filtro = document.createElement('input');
				var pos = numero_col + 1 - 1;
				filtro.type = "text";
				filtro.id = "F" + sId_Columnas;
				filtro.style.display = 'none';
				th.onclick = function() { 
					Muestra_Filtro(filtro);
					$('#' + filtro.id).focus();
				}
				filtro.onkeyup = function() {
					filtra(this.value, la_tabla, pos);
				};
				filtro.onblur = function() {
					Oculta_Filtro(filtro);
				}
				th.appendChild(filtro);
			}
			if(sArreglo.oculto != null) { //Define las columnas ocultas
				var pos = numero_col * 1;
				columnas_ocultas.push(pos);
				th.style.display = "none";
			}
			numero_col++;
			//CREA EL MAPA DE OBJETOS PARA LAS CELDAS
			arreglo_elementos[sId_Columnas] = '';
			cadena_tipo = sArreglo.tipo;
			if(cadena_tipo != null) {
				switch(cadena_tipo) {
					case 'boton':
						var objeto_celda = document.createElement('input');
						objeto_celda.type = "button";
						objeto_celda.style.width = "100%";
						arreglo_elementos[sId_Columnas] = objeto_celda;
						break;
					case 'bimagen':
						var objeto_celda = document.createElement('input');
						objeto_celda.type = "image";
						arreglo_elementos[sId_Columnas] = objeto_celda;
						break;
					case 'checkbox':
						var cantidad_check = oEsquema.Objetos[sId_Columnas];
						if(cantidad_check.length == 1) {
							var objeto_celda = document.createElement('input');
							objeto_celda.type = "checkbox";
							objeto_celda.value = oEsquema.Objetos[sId_Columnas][0].valor;
							arreglo_elementos[sId_Columnas] = objeto_celda;
						}
						break;
					case 'radio':
						var th2 = document.createElement('th');
						th2.id = 'T' + sId_Columnas + '_';
						th2.innerHTML = sArreglo.titulo1;
						th2.style.cssText = sArreglo.atributos;
						la_fila_cab.appendChild(th2);
						var objeto_celda = document.createElement('input');
						objeto_celda.type = "radio";
						objeto_celda.value = 1;
						arreglo_elementos[sId_Columnas] = objeto_celda;
						break;
					default:
						arreglo_elementos[sId_Columnas] = cadena_tipo;
						break;
				}
			}	//FIN DEL MAPA DE OBJETOS 
		}); //FIN DE CABEZERA
		
		/******************INICIO DEL CUERPO *****************/
		la_tabla.appendChild(cuerpo_tabla);
		$.each(oEsquema.Cuerpo, function(sFila, sColumnas) {
			var fila = cuerpo_tabla.insertRow(cuerpo_tabla.rows.length);
			fila.id = sFila;
			iFilas++;
			if(oEsquema.Enumerar != null) {//MUESTRA LOS NUMEROS DE LAS COLUMNAS, ESTA ASOCIADO A COMO VIENEN LOS IDENTIFICADORES EN EL OBJETO. DEBEN INICIAR EN 1
				th_nuevo = th_aux.cloneNode(true);
				th_nuevo.innerHTML = sFila;
				fila.appendChild(th_nuevo);
			}
			$.each(sColumnas, function(sCol, sValor) {
				identificador = sFila + '_' + sCol;
				var columna_fila = fila.insertCell(fila.cells.length);
				columna_fila.id = identificador;
				if(arreglo_elementos[sCol] != "") {
					if( typeof arreglo_elementos[sCol] != "string") {
						var nuevo = arreglo_elementos[sCol].cloneNode(true);
						nuevo.id = identificador + '_0';
						switch(nuevo.type) {
							case 'button':
								nuevo.value = sValor;
								nuevo.onclick = function() {
									Ejecutar(oEsquema.Cabezera[sCol].funcion, sFila, oEsquema.Cabezera[sCol].parametro);
									//$("#"+identificador + '_0').closest('tr').remove();
								}
								var div_texto = document.createElement('div');
								div_texto.id = "div_texto_boton";
								div_texto.style.cssText = "display:none";
								div_texto.innerHTML = sValor;
								nuevo.appendChild(div_texto);
								columna_fila.appendChild(nuevo);
								break;
							case 'image':
								nuevo.src = sValor;
								nuevo.onclick = function() {
									Ejecutar(oEsquema.Cabezera[sCol].funcion, sFila, oEsquema.Cabezera[sCol].parametro);
								}
								var div_texto = document.createElement('div');
								div_texto.id = "div_texto_img";
								div_texto.style.cssText = "display:none";
								div_texto.innerHTML = sValor;
								nuevo.appendChild(div_texto);
								columna_fila.appendChild(nuevo);
								break;
							case 'checkbox':
								var cantidad_check = oEsquema.Objetos[sCol];
								if(cantidad_check.length == 1) {
									nuevo.value = oEsquema.Objetos[sCol][0].valor;
									nuevo.onclick = function() {
										Revisa_Casilla(oEsquema.Objetos[sCol][0].etiqueta, sFila + '_' + sCol);
									}
									nuevo.innerHTML = '<DIV ID ="div_' + identificador + '" STYLE="display:none"></DIV></TD>';
									columna_fila.appendChild(nuevo);
								}
								break;
							case 'radio':
								nuevo.name = 'radio_' + identificador;
								var radio = document.createElement('input');
								radio.type = 'radio';
								radio.id = identificador + '_1';
								radio.name = 'radio_' + identificador;
								radio.value = 0;
								columna_fila.appendChild(nuevo);
								var columna_fila2 = fila.insertCell(fila.cells.length);
								columna_fila.id = 'R' + identificador;
								columna_fila2.id = 'R' + identificador + '_';
								columna_fila2.appendChild(radio);
								if(sValor == '1') {
									nuevo.checked = true;

								} else {
									radio.checked = true;

								}
								break;
						}
					} else {
						columna_fila.ondblclick = function() {
							Crea_Objeto(this, arreglo_elementos[sCol]);
						}
						columna_fila.innerHTML = sValor;
					}
				} else {
					columna_fila.innerHTML = sValor;
				}
			});
		});
		/****************** FIN DEL CUERPO   *****************/
		for(var k = 0; k < columnas_ocultas.length; k++) {
			Oculta_Columna(columnas_ocultas[k], la_tabla.id);

		}
		/***************** FIN OCULTA COLUMNAS *****************/
		/******************PAGINADOR          *****************/
		if(oEsquema.Paginador != null && oEsquema.Paginador != 0) {
			
			$("#div_inferior").html('');
			//alert(la_tabla.rows.length);
			if(la_tabla.rows.length > oEsquema.Paginador){
				p = new Paginador(div_inferior, la_tabla, oEsquema.Paginador);
				p.Mostrar();
			}
			
			
			
		}
		
		var div_titulo = document.createElement("div");
		div_titulo.id = "div_titulo";
		div_titulo.className = 'fondo_titulo';
		var titulo = document.createElement('h1');
		titulo.className = "titulo";
		titulo.innerHTML = this.Titulo;
		div_titulo.appendChild(titulo);
		var respuesta = document.createElement('div');
     	respuesta.id = "dialog_pie";
		div_superior.appendChild(div_titulo);
		div_superior.appendChild(respuesta);

	} // Fin de Generar Grid
	

	/**
	 * INICIO DE LA FUNCION PARA CONSTRUIR MYSQL TABLA
	 * **/
	this.Generar_Mysql = function() {
		
		oEsquema2 = this.Esq;
		$("#"+this.Div).html('');
		var div_principal = document.getElementById(this.Div);
		//div_principal.style.cssText = "WIDTH: 100%;height:50%;";
		
		var div_superior = document.createElement("div");
		div_superior.id = "div_superior" + this.GetName;
		div_principal.appendChild(div_superior);
		
		var div_medio = document.createElement("div");
		div_medio.id = "div_tabla" + this.GetName;
		div_medio.style.cssText = "height:80%;WIDTH: 100%;overflow: auto;";
		div_principal.appendChild(div_medio);
		
		var div_inferior = document.createElement("div");
		div_inferior.id = "div_inferior" + this.GetName;
		div_principal.appendChild(div_inferior);
		
		var la_tabla = document.createElement("table");
		la_tabla.id = "tabla_tgrid" + this.GetName;
		la_tabla.style.width = "100%";
		la_tabla.className = "TGrid";
		div_medio.appendChild(la_tabla);
		
		var iFilas = 0;
		var cuerpo_tabla = document.createElement('tBody');
		la_tabla.appendChild(cuerpo_tabla);
		
		var identificador = "";
		
		var la_cabezera = la_tabla.createTHead();
		
		var la_fila_cab = la_cabezera.insertRow(0);
		//la_fila_cab.style.cssText = "position:fixed;";
		
		
		/******************INICA CABEZERA*****************/
		
		if(oEsquema2.Enumerar != null) {
			la_tabla.style.emptyCells = "inherit";
			var th_enumera = document.createElement('th');
			la_fila_cab.appendChild(th_enumera);
			var th_aux = document.createElement('th');
		}
		
		//cabezera
		var num_cols = 1;
		$.each(oEsquema2.Cabezera, function(sId_Columnas, sArreglo) {
			var th = document.createElement('th');
			th.id = 'T' + sId_Columnas;
			th.style.cssText = "position:relative;";
			la_fila_cab.appendChild(th);
			th.innerHTML = sArreglo;
			num_cols++;
		});

		$.each(oEsquema2.Cuerpo, function(sFila, sColumnas) {
			var fila = cuerpo_tabla.insertRow(cuerpo_tabla.rows.length);
			fila.id = parseInt(sFila) + 1;
			iFilas++;
			if(oEsquema2.Enumerar != null) {//MUESTRA LOS NUMEROS DE LAS COLUMNAS, ESTA ASOCIADO A COMO VIENEN LOS IDENTIFICADORES EN EL OBJETO. DEBEN INICIAR EN 1
				th_nuevo = th_aux.cloneNode(true);
				th_nuevo.innerHTML = iFilas;
				fila.appendChild(th_nuevo);
			}
			$.each(sColumnas, function(sCol, sValor) {
				identificador = iFilas + '_' + sCol;
				var columna_fila = fila.insertCell(fila.cells.length);
				columna_fila.id = identificador;
				columna_fila.innerHTML = sValor;
			});
		});
		var div_titulo = document.createElement("div");
		div_titulo.id = "div_titulo";
		div_titulo.style.cssText = "color:#000;";
		var titulo = document.createElement('h1');
		titulo.className = "titulo";
		titulo.innerHTML = this.Titulo;
		div_titulo.appendChild(titulo);
		//alert(la_tabla.rows.length);
		if(oEsquema2.Paginador != null && oEsquema2.Paginador != 0) {
			$("#div_inferior").html('');
			if(la_tabla.rows.length > oEsquema2.Paginador){
				p = new Paginador(div_inferior, la_tabla, oEsquema2.Paginador);
				p.Mostrar();
			}
			
		}
		
		var respuesta = document.createElement('div');
     	respuesta.id = "dialog_pie";
		div_superior.appendChild(div_titulo);
		div_superior.appendChild(respuesta);
		
	}

	this.Genera_Xls = function() {
		var json = '{ ';
		var cabezera = '{ ';
		var inicio = 0;
		var inicio2 = 0;
		var fecha = new Date();
		$.each(this.Esq.Cuerpo, function(sFila, sColumnas) {
			if (inicio != 0){
				json +=',';
			}
			inicio++;
			json +=' " ' + sFila + ' " : { ';
			inicio2 = 0;
			$.each(sColumnas, function(sCol, sValor) {
				if (inicio2 != 0){
					json +=',';
				}
				inicio2++;
				json +=' " ' + sCol + ' " :  " ' + sValor + ' "';
			});
			json +='} ';
		});
		json +='} ';
		inicio = 0;
		$.each(this.Esq.Cabezera, function(sFila, sColumnas) {
			if (inicio != 0){
				cabezera +=',';
			}
			inicio++;
			cabezera +=' " ' + sFila + ' " :  " ' + sColumnas + ' "';
		});
		cabezera +='} ';
		
		
		$('#dialog_pie').dialog({
				modal: true,
				//autoOpen: false,
				//position: 'top',
			title : 'BAJAR ARCHIVO',
			hide: 'explode',
			show: 'slide',
			width: 350,
			height: 300,
			buttons: {			
				"Cerrar": function() {						
					$(this).dialog("close"); 
				}
			}
		});				
		$("#dialog_pie").html("<br><br><br><p><center>Cargando por favor espere un momento<br><img src='" + this.Img + "cargando.gif'></center></p>");
		$("#dialog_pie").show();
		$.ajax({
			url : this.Ruta+'/index.php/cooperativa/Exporta_Exel',
			type : "POST",
			data: "cuerpo=" + json + "&cabezera=" + cabezera,
			success : function(data_r) {
     			$("#dialog_pie").html(data_r);		
			}
		});
	}
	
	
	this.Genera_Xls_Json = function() {
		var json = '{ ';
		var cabezera = '{ ';
		var inicio = 0;
		var inicio2 = 0;
		var fecha = new Date();
		
		$("#tabla_tgrid"+this.GetName+" tbody tr").each(function(index) {
			var i = 0;
			var ubica_radio = 0;
			if (inicio != 0){
				json +=',';
			}
			inicio++;
			json +=' " ' + this.id + ' " : { ';
			inicio2 = 0;
			$(this).children("td").each(function(index2) {
				if (inicio2 != 0){
					json +=",";
				}
				inicio2++;
				if(this.id.charAt(0) == 'R') {//PARA OBTENER EL VALOR EN CASO DE OPTION BUTTON
					if(ubica_radio == 0) {
						ubica_radio = 1;
						var rad = 'radio_' + this.id.substring(1);
						var cont = $("input[name='" + rad + "']:checked").val();
						json += '"' + i + '" : "' + cont + '"' ;
						i++;
					}
				} else {//OBTENER EL VALOR TEXT DE LA CELDA
					if(this.childNodes.length > 1) {
						var algo = this.childNodes.item(0);
						json += '"' + i + '" : "' + algo.innerHTML + '"' ;
						i++;
					} else {
						json += '"' + i + '" : "' + $(this).text() + '"';
						i++;
					}
				}
			});
			json +='} ';
		});
		json +='} ';
		
		inicio = 0;
		$.each(this.Esq.Cabezera, function(sFila, sColumnas) {
			if (inicio != 0){
				cabezera +=',';
			}
			inicio++;
			cabezera +=' " ' + sFila + ' " :  " ' + sColumnas.titulo + ' "';
		});
		cabezera +='} ';
		$('#dialog_pie').dialog({
			modal: true,
			title : 'BAJAR ARCHIVO',
			hide: 'explode',
			show: 'slide',
			width: 350,
			height: 300,
			buttons: {			
				"Cerrar": function() {						
					$(this).dialog("close"); 
				}
			}
			
		});				
		$("#dialog_pie").html("<br><br><br><p><center>Cargando por favor espere un momento<br><img src='" + this.Img + "cargando.gif'></center></p>");
		$("#dialog_pie").show();
		$.ajax({
			url : this.Ruta+'/index.php/cooperativa/Exporta_Exel',
			type : "POST",
			data: "cuerpo=" + json + "&cabezera=" + cabezera,
			success : function(data_r) {
     			$("#dialog_pie").html(data_r);		
			}
		});
	}
	
	function Crear_Evento(elemento, evento, funcion) {
		if(elemento.addEventListener) {
			elemento.addEventListener(evento, funcion, false);
		} else {
			elemento.attachEvent("on" + evento, funcion);
		}
	}
	
}


function Crea_Objeto(elemento, tipo) {
	var identifica = elemento.id;
	var celda = document.getElementById(identifica);
	var trae_valor = $('#' + identifica).text();
	var id_separados = identifica.split('_');
	var div_oculto = document.createElement('div');
	div_oculto.style.display = "none";
	div_oculto.innerHTML = trae_valor;
	elemento.innerHTML = "<div style='display:none;'>" + trae_valor + "</div>";
	switch(tipo) {
		case 'textArea':
			var area = document.createElement('textarea');
			area.id = identifica + '_0';
			area.innerHTML = trae_valor;
			area.onblur = function() {
				Restaura_Objeto(this, identifica);
			}
			elemento.appendChild(area);
			break;
		case 'combo':
			var combo = document.createElement('select');
			combo.id = identifica + "_0";
			combo.style.width = "100%";
			combo.onblur = function() {
				Restaura_Objeto(this, identifica);
			}
			var contador = 0;
			$.each(oEsquema.Objetos[id_separados[1]], function(id, contenido) {
				combo.options[contador] = new Option(contenido.etiqueta, contenido.valor);
				sFil += "<OPTION value='" + contenido.valor + "' ";
				if(contenido.valor == trae_valor) {
					combo[contador].selected = 'true';
				}
				contador++;
			});
			elemento.appendChild(combo);
			break;
		case 'fecha':
			var trae_fecha = trae_valor.split("-");
			var dia = 0;
			var ano = 0;
			var formato = 0;
			if(eval(trae_fecha[0]) > 2000) {
				dia = trae_fecha[2];
				ano = trae_fecha[0];
				formato = 1;
			} else {
				dia = trae_fecha[0];
				ano = trae_fecha[2];
			}
			//COMBO PARA EL DIA
			var div_fecha = document.createElement('div');
			div_fecha.id = "div_" + identifica;
			div_fecha.style.cssText = "padding: 0 0 0 0; width:100%; height:100%; float:right;";
			var selec_dia = document.createElement('select');
			selec_dia.id = identifica + "_0";
			selec_dia.style.width = '40px';
			var contador = 1;
			for( contador = 1; contador < 32; contador++) {
				selec_dia.options[contador - 1] = new Option(contador, contador);
				if(eval(dia) == contador) {
					selec_dia[contador - 1].selected = 'true';
				}
			}
			div_fecha.appendChild(selec_dia);
			//COMBO PARA EL MES
			var selec_mes = document.createElement('select');
			selec_mes.id = identifica + "_1";
			selec_mes.style.width = '40px';
			for( contador = 1; contador < 13; contador++) {
				selec_mes.options[contador - 1] = new Option(contador, contador);
				if(eval(trae_fecha[1]) == contador) {
					selec_mes[contador - 1].selected = 'true';
				}
			}
			div_fecha.appendChild(selec_mes);
			//COMBO PARA EL AÑO
			var selec_ano = document.createElement('select');
			selec_ano.id = identifica + "_2";
			selec_ano.style.width = '60px';
			var contador = 1;
			for( contador = 1; contador < 12; contador++) {
				selec_ano.options[contador - 1] = new Option(contador + 2004, contador + 2004);
				if(eval(ano) == contador + 2004) {
					selec_ano[contador - 1].selected = 'true';
				}
			}
			div_fecha.appendChild(selec_ano);
			//BOTON DE ACEPTAR NUEVA FECHA
			var btn_a = document.createElement('input');
			btn_a.type = "button";
			btn_a.value = 'A';
			btn_a.onclick = function() {
				Restaura_Fecha(this, identifica, formato);
			}
			div_fecha.appendChild(btn_a);
			elemento.appendChild(div_fecha);

			break;
		case 'texto':
			var input_text = document.createElement('input');
			input_text.type = "text";
			input_text.id = identifica + "_0";
			input_text.value = trae_valor;
			input_text.style.width = "100%";
			input_text.onblur = function() {
				Restaura_Objeto(this, identifica);
			}
			elemento.appendChild(input_text);
			break;
		case 'calendario':
			var trae_fecha = trae_valor.split("-");
			var dia = 0;
			var ano = 0;
			var formato = 'dd-mm-yy';
			if(eval(trae_fecha[0]) > 2000) {
				dia = trae_fecha[2];
				ano = trae_fecha[0];
				formato = 'yy-mm-dd';
			} else {
				dia = trae_fecha[0];
				ano = trae_fecha[2];
			}
			var calendario = document.createElement('input');
			calendario.type = 'text';
			calendario.val = trae_fecha;
			calendario.id = identifica + '_0';
			var btn_a = document.createElement('input');
			btn_a.type = "button";
			btn_a.value = 'A';
			btn_a.onclick = function() {
				Restaura_Objeto(calendario, identifica);
			}
			elemento.appendChild(calendario);
			elemento.appendChild(btn_a);
			$("#" + identifica + "_0").datepicker({
				changeMonth : true,
				changeYear : true,
				dateFormat : formato
			});
			//$( "#"+identifica+"_0" ).datepicker( "option", "dateFormat", formato );
			$("#" + identifica + "_0").datepicker({
				currentText : trae_valor
			});
			break;
		default:
			break;
	}
	$('#' + identifica + '_0').focus();
}

function Ejecutar(funcion, fila, parametro) {
		var arreglo_valores = "{";
	if(parametro == null) {//ENVIAR TODAS LAS COLUMNAS A LA FUNCION A EJECUTAR
		$("#" + fila).each(function(index) {
			var i = 0;
			var ubica_radio = 0;
			$(this).children("td").each(function(index2) {
				if(this.id.charAt(0) == 'R') {//PARA OBTENER EL VALOR EN CASO DE OPTION BUTTON
					if(ubica_radio == 0) {
						ubica_radio = 1;
						var rad = 'radio_' + this.id.substring(1);
						var cont = $("input[name='" + rad + "']:checked").val();
						arreglo_valores += "\"" + i + "\" : \"" + cont + "\" ,";
						i++;
					}
				} else {//OBTENER EL VALOR TEXT DE LA CELDA
					if(this.childNodes.length > 1) {
						var algo = this.childNodes.item(0);
						arreglo_valores += "\"" + i + "\" : \"" + algo.innerHTML + "\" ,";
						i++;
					} else {
						arreglo_valores += "\"" + i + "\" : \"" + $(this).text() + "\" ,";
						i++;
					}
				}

			});

		});

	} else {//ENVIAR UN ARREGLO DE VALORES ESPECIFICADOS EN EL OBJETO BOTON
		var valores = parametro.split(',');
		var ubica_radio = 0;
		for(var j = 0; j < valores.length; j++) {//VERIFICAR QUE COLUMNAS SE VAN A ENVIAR A LA FUNCION A EJECUTAR
			fila_r = document.getElementById(fila).getElementsByTagName('td');
			var pos = parseInt(valores[j]) - 1;
			var id = fila_r[pos].id;
			if(id.charAt(0) == 'R') {
				if(ubica_radio == 0) {//PARA OBTENER EL VALOR EN CASO DE OPTION BUTTON
					ubica_radio = 1;
					var rad = 'radio_' + id.substring(1);
					var cont = $("input[name='" + rad + "']:checked").val();
					arreglo_valores += "\"" + j + "\" : \"" + cont + "\" ,";
					//reacomoda los valores del objeto parametro
					if(valores[j + 1] != null) {
						if(valores[j + 1] > valores[j]) {
							valores[j + 1]++;
						}
					}
				}
			} else {//OBTENER EL VALOR TEXT DE LA CELDA
				var hijos = document.getElementById(id).childNodes.length;
				if(hijos > 1) {
					var texto = document.getElementById(id).childNodes.item(0).innerHTML;
					arreglo_valores += "\"" + j + "\" : \"" + texto + "\" ,";
				} else {
					arreglo_valores += "\"" + j + "\" : \"" + $("#" + id).text() + "\" ,";
				}
			}
		}
	}
	arreglo_valores += " \"909\" : \"123\"}";
	/*var strUrl = sUrlP + funcion;
	$.ajax({
		url: strUrl,
		type : "POST",
		data: "objeto=" + arreglo_valores,
		 success : function(html){
	 		alert(html);
	 	}
	 });*/
	$("#"+fila).closest('tr').remove();
	alert("llego");
	return 0;
}

function Restaura_Objeto(elemento, id_td) {
	var id_objeto = elemento.id;
	var trae_valor = $('#' + id_objeto).val();
	$('#' + id_td).html(trae_valor);
}

function Restaura_Fecha(elemento, id_td, forma) {
	var id_objeto = elemento.id;
	var dia = $('#' + id_td + '_0').val();
	var mes = $('#' + id_td + '_1').val();
	var ano = $('#' + id_td + '_2').val();
	if(dia < 10)
		dia = '0' + dia;
	if(mes < 10)
		mes = '0' + mes;
	var regresa_valor = '';
	if(forma == 0)
		regresa_valor = dia + '-' + mes + '-' + ano;
	else
		regresa_valor = ano + '-' + mes + '-' + dia;
	$('#' + id_td).html(regresa_valor);
}

function Revisa_Casilla(texto, celda) {
	var check = '#' + celda + '_0';
	var div = '#div_' + celda;
	if($(check).is(':checked')) {
		$(div).html(texto);
	} else {
		$(div).html("");
	}
}

function Revisa_Radio(texto, celda) {
	var lbl = '#lbl_' + celda;
	$(lbl).html(texto);
}

function Muestra_Filtro(filtro) {
	$("#" + filtro.id).show();
}

function Oculta_Filtro(filtro) {
	$("#" + filtro.id).hide();
}

function Oculta_Columna(col, tabla) {
	fila = document.getElementById(tabla).getElementsByTagName('tr');
	for( i = 1; i < fila.length; i++)
	fila[i].getElementsByTagName('td')[col].style.display = 'none';
}

function filtra(txt, t, pos) {
	filas = t.getElementsByTagName('tr');
	if(txt != '') {
		for( i = 1; ele = filas[i]; i++) {
			texto = ele.getElementsByTagName('td')[pos].innerHTML.toUpperCase();
			posi = (texto.indexOf(txt.toUpperCase()) == 0);
			ele.style.display = (posi) ? '' : 'none';
		}
	} else {
		p.SetPagina(p.pagActual);
	}
}

//////////////////////CLASE PAGINADOR///////////////////////////
Paginador = function(divPaginador, tabla, tamPagina, funcXls) {
	this.miDiv = divPaginador;
	//un DIV donde irán controles de paginación
	this.tabla = tabla;
	//la tabla a paginar
	this.tamPagina = tamPagina;
	//el tamaño de la página (filas por página)
	this.pagActual = 1;
	//contador
	this.muestra = 0;
	//asumiendo que se parte en página 1
	this.paginas = Math.floor((this.tabla.rows.length - 2 ) / this.tamPagina) + 1;
	//¿?
	this.registros = this.tabla.rows.length - 1;

	this.SetPagina = function(num) {
		num = parseInt(num);
		if(num < 0 || num > this.paginas) {
			return;
		}
		//marca pagina actual
		id_li = 'li_' + num;
		id_li2 = 'li_' + this.pagActual;
		var li_actual = document.getElementById(id_li);
		var li_ant = document.getElementById(id_li2);
		if(num != this.pagActual) {
			li_actual.className = "seleccionado";
			li_ant.className = "deseleccionado";

		} else {
			li_actual.className = "seleccionado";
		}
		this.pagActual = num;
		var registro = 0;
		var min = 1 + (this.pagActual - 1) * this.tamPagina;
		var max = min + this.tamPagina - 1;
		for(var i = 1; i < this.registros+1; i++) {
			if(i < min || i > max)this.tabla.rows[i].style.display = 'none';
			else{
				this.tabla.rows[i].style.display = '';
				registro = i;
			}
		}

		if(this.muestra == 1) {
			muestra_item(num);
		}

		//mostrar botones
		var total_lineas = this.tamPagina * this.paginas;
		if(num == 1) {
			//this.miDiv.firstChild.rows[0].cells[1].style.display = "none";
			this.miDiv.firstChild.rows[0].cells[1].style.visibility = "hidden";
			this.miDiv.firstChild.rows[0].cells[0].innerHTML = 'Mostrando ' + min + ' a ' + registro + ' de ' + this.registros + ' | Pagina ' + this.pagActual + ' De ' + this.paginas;
		} else {
			//this.miDiv.firstChild.rows[0].cells[1].style.display = "table-cell";
			this.miDiv.firstChild.rows[0].cells[1].style.visibility = "visible";
			this.miDiv.firstChild.rows[0].cells[0].innerHTML = 'Mostrando ' + min + ' a ' + registro + ' de ' + this.registros + ' | Pagina ' + this.pagActual + ' De ' + this.paginas;
		}

		if(num == this.paginas) {
			//this.miDiv.firstChild.rows[0].cells[3].style.display = "none";
			this.miDiv.firstChild.rows[0].cells[3].style.visibility = "hidden";
			this.miDiv.firstChild.rows[0].cells[0].innerHTML = 'Mostrando ' + min + ' a ' + registro + ' de ' + this.registros + ' | Pagina ' + this.pagActual + ' De ' + this.paginas;
		} else {
			//this.miDiv.firstChild.rows[0].cells[3].style.display = "table-cell";
			this.miDiv.firstChild.rows[0].cells[3].style.visibility = "visible";
			this.miDiv.firstChild.rows[0].cells[0].innerHTML = 'Mostrando ' + min + ' a ' + registro + ' de ' + this.registros + ' | Pagina ' + this.pagActual + ' De ' + this.paginas;
		}

		//MUESTRA PAGINAS
		var desde = 0;
		var hasta = 0;
	}

	this.Mostrar = function() {
		//alert(this.paginas + "--" +this.tabla.rows.length);
		if(this.paginas > 3) {
			this.muestra = 1;
		}
		var tblPaginador = document.createElement('table');
		//CREA TABLA DEL PAGINADOR
		
		var fil = tblPaginador.insertRow(tblPaginador.rows.length);
		//INSERTA PRIMERA FILA DE LA TABLA
		//MUESTRA PAGINA ACTUAL Y TOTALES DEL PAGINADOR
		var numero_pagina = fil.insertCell(fil.cells.length);
		numero_pagina.innerHTML = '';
		numero_pagina.className = 'celdas';
		//BOTON ANTERIOR DEL PAGINADOR

		//var ant = fil.insertCell(fil.cells.length);
		var ant = fil.insertCell(fil.cells.length);
		ant.innerHTML = 'Anterior';
		ant.className = 'boton_anterior';
		var self = this;
		ant.onclick = function() {
			if(self.pagActual == 1)
				return;
			self.SetPagina(self.pagActual - 1);
		}
		//LISTA DE PAGINAS DEL PAGINADOR
		var lista_paginas = fil.insertCell(fil.cells.length);
		lista_paginas.className = "celdas";
		var ul = document.createElement('ul');
		ul.id = "lista_paginas";
		//BOTON SIGUIENTE DEL PAGINADOR
		var sig = fil.insertCell(fil.cells.length);
		sig.innerHTML = 'Siguiente';
		sig.className = 'boton_adelante';
		sig.onclick = function() {
			if(self.pagActual == self.paginas)
				return;
			self.SetPagina(self.pagActual + 1);
		}
		
		
		//SE AGREGA LA TABLA DEL PAGINADOR AL DIV ESPECIFICO DEL PAGINADOR
		this.miDiv.appendChild(tblPaginador);
		this.miDiv.className = 'paginador';
		//ASIGNA LA CLASS PARA EL ESTILO DEL PAGINADOR

		//LLENA LA LISTA DE PAGINAS
		lista_paginas.appendChild(ul);
		var inicio = document.createElement("li");
		inicio.id = "li_inicio";
		inicio.innerHTML = "<<";
		inicio.onclick = function() {
			p.SetPagina(1);
		}
		if(this.muestra == 1) {
			ul.appendChild(inicio);
		}
		for(var i = 0; i < this.paginas; i++) {
			var ele = document.createElement('li');
			ele.innerHTML = i + 1;
			id_ele = i + 1;
			ele.id = "li_" + id_ele;
			Crear_Evento(ele, "click", function() {
				p.SetPagina(this.innerHTML);
			});
			ul.appendChild(ele);
		}
		var fin = document.createElement("li");
		fin.id = "li_fin";
		fin.innerHTML = ">>";
		fin.onclick = function() {
			p.SetPagina(self.paginas);
		}
		if(this.muestra == 1) {
			ul.appendChild(fin);
		}
		//BOTON GENERA EXEL
		//alert(Grid.exel);
		if(Grid.exel == 1){ 
			var xls = fil.insertCell(fil.cells.length);
			xls.innerHTML = 'Generar XLS';
			xls.className = 'boton_adelante';
			xls.onclick = function() {
				if(Grid.Tipo_Origen == 'json'){
					//alert(Grid.Tipo_Origen);
					Grid.Genera_Xls_Json();	
				}else{
					//alert(Grid.Tipo_Origen);
					Grid.Genera_Xls();
				}
				
			}
		}
		//ME LLEVA A LA PRIMERA PAGINA
		if(this.tabla.rows.length - 1 > this.paginas * this.tamPagina)
			this.paginas = this.paginas + 1;

		this.SetPagina(this.pagActual);
		
		//this.miDiv.style.cssText = 'align: right;';
	}
	function muestra_item(actual) {
		var hasta = actual + 3;
		if(hasta <= p.paginas) {
			for(var i = 1; i < actual; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).hide();
			}
			for(var i = actual; i < hasta; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).show();
			}
			for(var i = hasta; i <= p.paginas; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).hide();
			}
		} else {
			var desde = p.paginas - 3;
			for(var i = 1; i <= desde; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).hide();
			}
			for(var i = desde + 1; i <= p.paginas; i++) {
				id_ele = i * 1;
				identificador = "li_" + id_ele;
				$("#" + identificador).show();
			}
		}
	}

	function Crear_Evento(elemento, evento, funcion) {
		if(elemento.addEventListener) {
			elemento.addEventListener(evento, funcion, false);
		} else {
			elemento.attachEvent("on" + evento, funcion);
		}
	}

}